home *** CD-ROM | disk | FTP | other *** search
/ Libris Britannia 4 / science library(b).zip / science library(b) / PROGRAMM / DB_CLIPP / 0669.ZIP / UDF_HELP.LOG < prev    next >
Internet Message Format  |  1987-04-05  |  7KB

  1. Date: 01-23-87 (17:09)              Number: 1150   
  2.   To: ALL                           Refer#: None
  3. From: RUSS NELSON                   Recv'd: (n/a)
  4. Subj: DATA ENTRY HELP AIDS          Sec'ty: Public Message
  5.  
  6. I'm trying to develop an algorithm that will place a brief description 
  7. of each data entry field on the screen as the cursor is on the field. 
  8. I've found a so-so solution which works but doesn't seem too effecient.
  9. My solution is:
  10. STORE 'THE MESSAGE' TO HLP_001
  11. ECT...
  12. STORE '001' TO FIRST,COUNTER
  13. STORE '021' TO LAST
  14. @ 3,8 GET ACCT
  15. @ 22,0 CLEAR
  16. @ 22,(80-LEN(HLP_&COUNTER))/2 SAY HLP_&COUNTER
  17. READ
  18. IF READKEY() > 0 .AND. COUNTER<LAST
  19. STORE ( STR( &COUNTER + 1001,4) ,2,3) TO COUNTER
  20. ENDIF
  21. AND SO ON FOR EACH @ROW,COL GET FIELD STATEMENT
  22. There must be a better way. Any suggestions would be greatly 
  23. appreciated. Thanks.
  24.  
  25. Date: 01-23-87 (22:09)              Number: 1151   
  26.   To: RUSS NELSON                   Refer#: 1150    
  27. From: SYSOP                         Recv'd: No
  28. Subj: DATA ENTRY HELP AIDS          Sec'ty: Public Message
  29.  
  30. Making a routine similar to the one you described a procedure and DOing
  31. the procedure each time you wanted to print the help line would reduce 
  32. the lines of code, but would not be any more efficient is execution.  
  33. CLIPPER has a built in help facility that is automatically called with 
  34. the F1 key.  It could be adapted to you needs.
  35.  
  36. Date: 01-24-87 (01:32)              Number: 1152   
  37.   To: RUSS NELSON                   Refer#: 1150    
  38. From: BILL CASTNER                  Recv'd: No
  39. Subj: DATA ENTRY HELP AIDS          Sec'ty: Public Message
  40.  
  41. You need Clipper by Nantucket.  The VALID option in combination with
  42. UDFs -- User Defined functions-- would let you do this.  An untested
  43. but promising solution is from Communications Horizons, that lets
  44. you use UDFs (they say) in Dbase.  But without the VALID feature as
  45. a trigger, I think you are out of luck even with this software
  46. aid.  Sorry,  but Dbase III is very limited in terms of what it
  47. offers in terms of our desired screen display.  But you could do
  48. it in Clipper without sweat.  Bill.
  49. Date: 01-27-87 (13:03)              Number: 1158   
  50.   To: RUSS NELSON                   Refer#: 1150    
  51. From: JOHN KASTER                   Recv'd: No
  52. Subj: DATA ENTRY HELP AIDS          Sec'ty: Public Message
  53.  
  54. Russ, are you doing strictly a dBASE application? Whether you are or 
  55. not, one possible method is to have a file indexed on the field name you 
  56. are "GET"ting.  Temporarily use that file, seek the description for that 
  57. file name, and write it where you are.  There's a good way to make that
  58. into a function from CLIPPER if you have it.  Let me know - I can give 
  59. you example source code.
  60.                           John Kaster
  61.  
  62. Date: 01-27-87 (14:01)              Number: 1160   
  63.   To: BILL CASTNER                  Refer#: None
  64. From: STEVE ANDERSON                Recv'd: Yes
  65. Subj: DATA ENTRY HELP LINES         Sec'ty: Public Message
  66.  
  67. A brief example of how you would use Clipper UDF's and VALID would be
  68. helpfull to me.  I am just learning Clipper.  I also like the idea of
  69. having help lines with each get statement.  Thanks,
  70.  
  71. Date: 01-27-87 (00:13)              Number: 1163   
  72.   To: STEVE ANDERSON                Refer#: 1160    
  73. From: BILL CASTNER                  Recv'd: Yes
  74. Subj: DATA ENTRY HELP LINES         Sec'ty: Public Message
  75.  
  76. There are several kinds of help lines possible with Clipper:
  77. Type One: Displayed concurrently with the GET
  78. Type Two: Displayed if a response is incorrect to a GET
  79. Type Three: Displayed if a user needs some help and requests it
  80.     For Type One help displays, the easiest way, I think, is
  81. using a UDF in the VALID option of the get.  By trapping the
  82. LASTKEY() .and. READVAR() you can tell what the next GET will
  83. be, and display some text message before returning from the
  84. VALID clause.  I will try and look up a code example from one
  85. of my programs and leave it here in the next day or so.
  86.    For type Two, the message is displayed if a GET value is
  87. inappropriate, and the VALID clause and UDF is straightforward:
  88. @ x,y say 'Enter Registration Code' get mregcode valid 
  89. udfregcode(mregcode)
  90. * lets assume you want the message to display at 24,5
  91. * the following would be located somewhere in the .prg file:
  92. function udfregcode
  93. parameter cstring
  94. * allowable codes are A,B,C and D
  95. if cstring $ 'ABCD'
  96. return .t.        && no need for a help display
  97. endif
  98. * incorrect value--tell user about it
  99. @ 24,5 say 'Allowable Registration Codes are A,B,C,D.  Try again.'
  100. return .f.
  101. ******End of Function regcode
  102.     For type Three, the Clipper Help.Prg would allow someone to strike
  103. F1 at any point and get a help listing, which could be made context
  104. specific using the PROCNAME(), and READVAR() functions in particular
  105. to allow you to vector to an appropriate bit of text to display.
  106. .
  107. An excellent article covering many of these topics, with examples of
  108. what I am calling Type Three help, is 'User Defined Validation and
  109. Context Specific Help;, J. Ari Kornfeld, Data Based Advisor,
  110. Vol. 4, #12, December 1986, p.4
  111. .
  112. One final note, you can mesh types two and three help systems together
  113. by using the KEYBOARD command.  If in the UDF udfregcode above 
  114. I had put the line KEYBOARD CHR(28) in place of the @ 24,5 say stuff,
  115. the help system would be called automatically when the UDF returned
  116. to the calling GET line.  (As key value 28 is the F1 key to 
  117. Clipper).
  118.  
  119. Date: 01-29-87 (02:11)              Number: 1164   
  120.   To: STEVE ANDERSON                Refer#: 1160    
  121. From: BILL CASTNER                  Recv'd: Yes
  122. Subj: DATA ENTRY HELP LINES         Sec'ty: Public Message
  123.  
  124. Because the example is lengthy, I am uploading it to the new files
  125. section as GETSHELP.ARC.  This includes a GETSKEYS.PRG file that
  126. you can compile to get a demonstration, and a GETSKEYS.TXT file
  127. that offers some notes and coding alternatives.
  128. What the example shows is two types on in-line context specific
  129. help during READs.  One type displays a help line for each
  130. get that is GET specific.  That, I think, was your real quest.  The
  131. second type of help does this too, but if an invalid entry is made
  132. it displays context-specific error messages.  Look over the code.
  133. There is a lot to be said for writing data entry screens that
  134. provide in-line help at the bottom of the screen, rather than
  135. just (aren't we Clippers getting jaded?) allowing an F1 key
  136. asynchronous help routine to be called.
  137. I would appreciate any comments as to how readable any of this
  138. is.  I am seriously considering sending out a more fleshed out
  139. version of this to Data Based Advisor or others as a reasonable
  140. example to others of how Clipper with UDF and VALID can mean
  141. a profoundly different look to data entry screens.
  142.